package com.itheima.model.audit.pojos;

import com.itheima.model.audit.enums.AuditStatus;
import com.itheima.model.audit.enums.ContentType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 审核任务实体
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "audit_task")
public class AuditTask implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * MongoDB 主键
     */
    @Id
    private String id;

    /**
     * 任务ID（唯一标识）
     */
    private String taskId;

    /**
     * 内容类型（存储为字符串）
     */
    private String contentType;

    /**
     * 内容ID（笔记ID/书评ID/评论ID等）
     */
    private String contentId;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 待审核的文本内容
     */
    private String textContent;

    /**
     * 待审核的图片URL列表
     */
    private List<String> imageUrls;

    /**
     * 审核状态（存储为整数）
     */
    private Integer auditStatus;

    /**
     * AI审核结果建议（PASS/REVIEW/BLOCK）
     */
    private String aiSuggestion;

    /**
     * AI审核标签（违规类型）
     */
    private String aiLabel;

    /**
     * AI审核置信度（0-1）
     */
    private Double aiConfidence;

    /**
     * 人工审核员ID
     */
    private Integer auditorId;

    /**
     * 人工审核意见
     */
    private String auditComment;

    /**
     * 重试次数
     */
    private Integer retryCount;

    /**
     * 最大重试次数
     */
    private Integer maxRetry;

    /**
     * 延迟执行时间（毫秒）
     */
    private Long delayTime;

    /**
     * 任务创建时间
     */
    private Date createTime;

    /**
     * 任务更新时间
     */
    private Date updateTime;

    /**
     * 预计执行时间（用于延迟队列）
     */
    private Long executeTime;

    /**
     * 扩展数据（JSON格式）
     */
    private String extraData;
}


